<template>
  <view>
    <button open-type="getUserInfo" @getuserinfo="getUserInfoByBtn" type="primary">微信登录</button>
  </view>
</template>

<script>
export default {
  onLoad () {
    this.getCode()
  },
  methods: {
    // 获取登录凭证
    async getCode () {
      const [err, dataCode] = await uni.login()
      if (!err) {
        this.code = dataCode.code
        this.getUserInfoByApi()
      }
    },
    // 使用API获取用户信息
    async getUserInfoByApi () {
      const [err, scopeInfo] = await uni.getSetting()
      if (!err) {
        if (scopeInfo.authSetting['scope.userInfo']) {
          //  如果用户授权了=》获取个人信息
          uni.getUserInfo({
            success: (res) => {
              console.log(res)
              this.login(res)
            }
          })
        }
      }
    },
    // 通过button形式获取用户信息
    getUserInfoByBtn (res) {
      console.log('微信用户信息：', res.detail)
      this.login(res.detail)
    },
    // 调用登录接口（后台）
    async login (userInfo) {
      // 获取用户登录凭证
      // const [err, dataCode] = await uni.login()
      // console.log('用户登录凭证:', err, dataCode, userInfo)
      // 获取用户信息
      const { encryptedData, iv, rawData, signature } = userInfo
      // 调用后台接口
      const { msg, data } = await this.request({
        url: '/users/wxlogin',
        method: 'post',
        data: {
          // 用户凭证
          // code: dataCode.code,
          code: this.code,
          // 用户信息
          encryptedData, iv, rawData, signature
        }
      })
      console.log('登录：', msg, data)
      if (msg.status === 200) {
        // token存储到本地
        uni.setStorageSync('hm_token', data.token)
        uni.showToast({
          title: '登录成功',
          duration: 2000,
          success: () => {
            // 返回上一个页面
            uni.navigateBack()
          }
        })


      }
    }
  },
}
</script>

<style lang="scss" scoped>
button {
  width: 600rpx;
  margin: 200rpx auto 0;
}
</style>